Import der benötigten Bibliotheken

Inhaltsverzeichnis

  1. Aufgabe 1
  2. Aufgabe 2
  3. Aufgabe 3
  4. Aufgabe 4
  5. Aufgabe 5
  6. Aufgabe 6



Aufgabe 1 id=“Aufgabe1”

Logistik spielt in der Produktentwicklung der Automobilindustrie eine immer größer werdende Rolle. So müssen vom Lieferanten produzierte Teile zunächst zum OEM geliefert werden, bevor sie eingebaut werden können. Was auf den ersten Blick logisch erscheint, sollte für eine professionelle Organisation unbedingt näher analysiert werden. Erstellen Sie deshalb eine Verteilung für den Logistikverzug von Komponente „K7“. Nutzen Sie hierfür das Produktionsdatum aus dem Datensatz “Komponente_K7.csv” und das Wareneingangsdatum aus “Logistikverzug_K7.csv”. Sie können davon ausgehen, dass der Hersteller das Teil am auf den Produktionstag folgenden Werktag an die Logistikabteilung übergibt. Für die Versandvorbereitung wird ein Werktag benötigt. Erstellen Sie für die Modellbildung in R einen neuen Datensatz “Logistikverzug”, der die benötigten Informationen aus beiden Datensätzen enthält.

Wie ist der Logistikverzug verteilt? Begründen Sie Ihre Auswahl und stellen Sie Ihre Vorgehensweise kurz dar (6 Punkte).

setwd("C:/Users/Samuel/code/ida_casestudy/Data/Logistikverzug")
getwd()
## [1] "C:/Users/Samuel/code/ida_casestudy/Data/Logistikverzug"
##Import des Datensatzes mit Infos zu den Produktionsdaten
produktion = read.csv("Komponente_K7.csv", head = TRUE, sep=";")
mode(produktion$Produktionsdatum)
## [1] "character"
##Entfernung der Zeilennummer + 
produktion = produktion[,2:6]
produktion$Produktionsdatum = as.Date(produktion$Produktionsdatum, format = "%Y-%m-%d")
mode(produktion$Produktionsdatum)
## [1] "numeric"
##Import der Daten für den Wareneingang
eingang = read.csv("Logistics_delay_K7.csv", head = TRUE)
##Entfernen der Zeilennummer (obsolet)
eingang = eingang[,2:6]

##Änderung des Datentyps des Wareneigangsdatums: character -> numeric (Date)
eingang$Wareneingang = as.Date(eingang$Wareneingang, format = "%Y-%m-%d")

#Zusammenführung der Daten erfolgt mittels ID-Nummer (Überprüfung der Datentypen)
logistik = merge(eingang, produktion, by = c("IDNummer","Herstellernummer","Werksnummer"))
rm(eingang,produktion)

##Hinzufügen einer Spalte für den Logistikverzug
logistik = data.frame(logistik, logistikverzug = as.numeric(logistik$Wareneingang-logistik$Produktionsdatum))

ggplot(logistik, aes(logistikverzug)) +
    geom_bar() +
    xlab("Logistikverzug in Tagen") +
    ylab("Absolute Häufigkeit") +
    ggtitle("Verteilung des Logistikverzugs von Komponente K7")

Aus dem Barplot wird ersichtlich, dass die Verteilung des Lieferverzugs einer Normalverteilung sehr ähnlich ist. Sie ist unimodal und leich linkssteil. Die Verteilung ist sehr symmetrisch (es gilt in etwa Median = Modus = Mittelwert). Die approximative Normalverteilung kann nach dem Zentralen Grenzwertsatz durch die additive Überlagerung vieler einzelner Zufallseffekte entstehen. Dies ist grafisch relativ gut zu sehen. Mathematisch, analytisch ist dies nicht ganz einfach zu zeigen, da die Daten ordinal skaliert sind mit relativ wenigen Ausprägungen.

(Vielleicht mit sample Daten also Pseudozufall einen Shapiro-Wilk-Test machen) Problem: Tests werden bei großen Stichproben automatisch signifikant.


Wie viel Zeit vergeht mindestens/höchstens zwischen Warenausgang und Wareneingang (2 Punkte)?

print(min(logistik$logistikverzug))
## [1] 7
max(logistik$logistikverzug)
## [1] 18
ggplot(logistik, aes(logistikverzug)) +
    geom_boxplot() +
    xlab("Logistikverzug in Tagen") +
    scale_y_discrete("") +
    ggtitle("Boxplot Logistikverzug")

Dezile:

##   0%  10%  20%  30%  40%  50%  60%  70%  80%  90% 100% 
##    7    9    9   10   10   10   10   11   11   11   18


Bestimmen Sie den Mittelwert des Logistikverzugs (1 Punkt).

#Median:
fivenum(logistik$logistikverzug)[3]
## [1] 10
#Arithmetisches Mittel:
mean(logistik$logistikverzug)
## [1] 10.08044
#Modus
names(which.max(table(logistik$logistikverzug)))
## [1] "10"

Stellen Sie die Verteilung in geeigneter Weise mit Plotly dar (2 Punkte).

Aufgabe 2 id=“Aufgabe2”

Warum ist es sinnvoll, die Ihnen bereitgestellten Daten in separaten Dateien abzulegen und nicht alles in einer riesigen Tabelle abzuspeichern (4 Argumente)? Wie nennt sich das zugrunde liegende Datenbankkonzept? (3 Punkte)


Bei dem zugrundeliegenden Datenbankkonzept handelt es sich um das sog. “Relational Database Management System” (RDBMS). Mit dem RDBMS ist es möglich, relationale Datenbanken und die zugehörigen Daten zu erstellen, zu pflegen und zu administrieren. Hierzu werden die Daten separat in Tabellen gespeichert und strukturiert miteinander verknüpft. Diese Verknüpfungen werden genutzt, um Tabellen in Beziehung zu setzen.

Es ist notwendig die Daten in eine normalisierte Form zu bringen und komplexe Datenobjekte so zu zerlegen, damit die in Beziehung zu einander stehen (über gemeinsame Attribute).

Daten können mittels Datenbanksprachen wie SQL abgefragt und manipuliert werden.

Vorteile eines RDBMS:

  1. Schnellerer Abruf der Daten
  2. Eignet sich für für sehr große Datenvolumina
  3. Minimierung der Auswirkungen von Datenevrlust
  4. Zuverlässiges System zur Datenspeicherung
  5. Redundanzfreiheit und Konsistenz der Daten gewährleistet
  6. Abfragen der Daten nach verschiedensten Kritierein ist möglich
  7. Unterstützung verteilter Datenbanken und einer Client-Server-Architektur
  8. Getrennt gespeicherte Daten erhöhen auch die Sicherheit des vollständigen Datensatzes.
  9. Lässt mehrere Nutzerzugriffe zur selben Zeit (bei Gewährleistung der Datenintegrität) zu



Aufgabe 3

Wie viele der Komponenten K7 landeten in Fahrzeugen, die in Dortmund zugelassen wurden?

setwd("C:/Users/Samuel/code/ida_casestudy/Data/Zulassungen")
getwd()
## [1] "C:/Users/Samuel/code/ida_casestudy/Data/Zulassungen"
#K7 ist nur in den Modellen vom Typ22 enthalten!!!


# Ist das der richtige Ort? Wehr (Baden) nicht in Zulassungstabelle vorhanden
# WEHR1 nach Tabelle Geodaten_Gemeinden_v1.2_2017-08-02_TrR
zulassungen = read.csv("Zulassungen_alle_Fahrzeuge.csv", head = TRUE, sep=";")
#Entfernen der unnötigen ersten Spalte
zulassungen = zulassungen[,-1]

setwd("C:/Users/Samuel/code/ida_casestudy/Data/Fahrzeug")
Komponenten_Typ22 = read.csv2("Bestandteile_Fahrzeuge_OEM2_Typ22.csv")
Komponenten_Typ22 = Komponenten_Typ22[,-1]

# Filtern der Zulassungen auf Fahrzeuge aus WEHR1
zulassungen_wehr1 = subset(zulassungen, subset = zulassungen$Gemeinden=="WEHR1")
# Mit Datensatz zu Bestandtteilen joinen
fahrzeuge_mit_k7_wehr1 = inner_join(Komponenten_Typ22, zulassungen_wehr1, by=c("ID_Fahrzeug" = "IDNummer"))
nrow(fahrzeuge_mit_k7_wehr1)
## [1] 24

Aufgabe 4

Welche Datentypen haben die Attribute der Zulassungstabelle „Zulassungen_aller_Fahrzeuge“? Erstellen Sie dazu eine Tabelle in Markdown. (2 Punkte)

glimpse(zulassungen)
## Rows: 3,204,104
## Columns: 3
## $ IDNummer  <chr> "11-1-11-1", "11-1-11-2", "12-1-12-1", "12-1-12-2", "12-1-12~
## $ Gemeinden <chr> "DRESDEN", "DRESDEN", "LEIPZIG", "LEIPZIG", "DORTMUND", "DOR~
## $ Zulassung <chr> "2009-01-01", "2009-01-01", "2009-01-01", "2009-01-01", "200~

IDNummer: Character
Gemeinden: Character
Zulassung: Character (könnte mit as.Date(zulassungen$Zulassung, format= “%Y %d %m”) sinnvoll formatiert werden)

Aufgabe 5

Sie wollen Ihre Applikation veröffentlichen. Warum ist es gerade dann sinnvoll die Datensätze auf der Datenbank eines Servers abzulegen? Warum können Sie die Datensätze nicht auf Ihrem persönlichen Computer ablegen? Nennen Sie eine einfache Möglichkeit Ihre Applikation ihrem Kundenkreis zugänglich zu machen? (2 Argumente je Frage, insg. 3 Punkte)

Da ein Fernzugriff auf die Datenbank möglich sein soll ist es notwendig, diese auf einem Server anzulegen, auf welchen zu jeder Zeit zugegriffen werden kann. So ist es ebenso möglich, dass die Daten nicht nur zeitlich uneingeschränkt, sondern auch weltweit ohne direkten physischen Zugriff auf einen speziellen Computer verfügbar gemacht werden können. Eine Möglichkeit, die Applikation zu veröffentlichen wäre, sie innerhalb eines firmeneigenen passwortgeschützten Bereichs in eine Website zu implementieren. Ebenso wäre es möglich sie als Datei zu verschicken (diese Datei müsste ohne Aufwand ausführbar sein und eine Schnittstelle zum jew. Server enthalten).

Aufgabe 6

Am 11.08.2010 hat es einen Unfall mit Fahrerflucht gegeben. Von dem Kennzeichen des Unfallwagens fehlt jede Spur. Da Sie für das Kraftfahrtbundesamt arbeiten und fragt bittet Sie die Polizei um Mithilfe. Finden Sie heraus, wo das Fahrzeug mit der Karosseriebauteilnummer „K7-114-1142-31“ zugelassen wurde. (3 Punkte)

zugelassene_fahrzeuge_mit_K7 = inner_join(zulassungen, Komponenten_Typ22, by=c("IDNummer" = "ID_Fahrzeug"))
gesuchtes_Fahrzeug = subset(zugelassene_fahrzeuge_mit_K7, subset=(zugelassene_fahrzeuge_mit_K7$ID_Karosserie == "K7-114-1142-31")) 
print(gesuchtes_Fahrzeug$Gemeinden)
## [1] "ALLENDORF (EDER)"

Das Fahrzeug mit der gesuchten Karosserie-Teilenummer “K7-114-1142-31” wurde in Allendorf-Eder zugelassen. <<<<<<< HEAD

======= >>>>>>> e18d4e19eaf09791c035d0f4ed4c5d385efb7e23